/*
 * Copyright (c) 2023 huipei.x
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cn.xphsc.kubernetes.core.query;
/**
 * {@link }
 * @author <a href="xiongpeih@163.com">huipei.x</a>
 * @description: Storage Query
 * @since 1.0.0
 */
public class StorageQuery {

    private String pretty;
    private Boolean allowWatchBookmarks;
    private String _continue;
    private String fieldSelector;
    private String labelSelector;
    private Integer limit;
    private String resourceVersion;
    private String resourceVersionMatch;
    private Integer timeoutSeconds;
    private Boolean watch;

    public static StorageQuery.Builder builder() {
        return new StorageQuery.Builder();
    }

    private StorageQuery(StorageQuery.Builder builder) {
        this.pretty = builder.pretty;
        this.allowWatchBookmarks = builder.allowWatchBookmarks;
        this._continue = builder._continue;
        this._continue = builder._continue;
        this.fieldSelector = builder.fieldSelector;
        this.labelSelector = builder.labelSelector;
        this.limit = builder.limit;
        this.resourceVersion = builder.resourceVersion;
        this.resourceVersion = builder.resourceVersion;
        this.resourceVersionMatch=builder.resourceVersionMatch;
        this.resourceVersionMatch=builder.resourceVersionMatch;
        this.timeoutSeconds=builder.timeoutSeconds;
        this.watch=builder.watch;
    }


    public static class Builder {
        private   String pretty;
        private Boolean allowWatchBookmarks;
        private String _continue;

        private String fieldSelector;
        private String labelSelector;
        private Integer limit;
        private String resourceVersion;
        private String resourceVersionMatch;
        private Integer timeoutSeconds;
        private Boolean watch;
        public Builder() {
        }
        public <T> StorageQuery.Builder pretty(String pretty) {
            this.pretty = pretty;
            return this;
        }

        public <T> StorageQuery.Builder allowWatchBookmarks(boolean allowWatchBookmarks) {
            this.allowWatchBookmarks = allowWatchBookmarks;
            return this;
        }


        public <T> StorageQuery.Builder _continue(String _continue) {
            this._continue = _continue;
            return this;
        }
        public <T> StorageQuery.Builder fieldSelector(String fieldSelector) {
            this.fieldSelector = fieldSelector;
            return this;
        }
        public <T> StorageQuery.Builder labelSelector(String labelSelector) {
            this.labelSelector = labelSelector;
            return this;
        }
        public <T> StorageQuery.Builder limit(Integer limit) {
            this.limit = limit;
            return this;
        }
        public <T> StorageQuery.Builder resourceVersion(String resourceVersion) {
            this.resourceVersion = resourceVersion;
            return this;
        }
        public <T> StorageQuery.Builder resourceVersionMatch(String resourceVersionMatch) {
            this.resourceVersionMatch = resourceVersionMatch;
            return this;
        }
        public <T> StorageQuery.Builder timeoutSeconds(Integer timeoutSeconds) {
            this.timeoutSeconds = timeoutSeconds;
            return this;
        }
        public <T> StorageQuery.Builder watch(Boolean watch) {
            this.watch = watch;
            return this;
        }
        public StorageQuery build() {
            return new StorageQuery(this);
        }
    }


    public String pretty() {
        return pretty;
    }

    public Boolean allowWatchBookmarks() {
        return allowWatchBookmarks;
    }

    public String _continue() {
        return _continue;
    }

    public String fieldSelector() {
        return fieldSelector;
    }

    public String labelSelector() {
        return labelSelector;
    }

    public Integer limit() {
        return limit;
    }

    public String resourceVersion() {
        return resourceVersion;
    }

    public String resourceVersionMatch() {
        return resourceVersionMatch;
    }

    public Integer timeoutSeconds() {
        return timeoutSeconds;
    }

    public Boolean watch() {
        return watch;
    }
}
